package com.cloudbroker.bcs.platform.ltb.bizapi.service.user;

import com.cloudbroker.bcs.common.annotation.CreditsOper;
import com.cloudbroker.bcs.common.annotation.NoLogin;
import com.cloudbroker.bcs.common.annotation.NoToken;
import com.cloudbroker.bcs.common.annotation.RedisMutex;
import com.cloudbroker.bcs.common.constants.type.BusinessType;
import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.admin.back.UserEntityVO;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.user.back.InviteInfoBack;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.user.back.SendSMSBack;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.user.back.UserInfoBack;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.user.back.UserLoginBack;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.user.back.*;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.user.vo.*;

/**
 * Created by tianrui on 2016/7/8.
 */
public interface UserBizService {

    /**
     * 短信验证码发送
     * */
    @NoLogin
    @NoToken
    public SendSMSBack funcSendSMS(SendSMSForm param);


    /**
     * 跟投者用户登录
     * */
    @NoLogin
    @NoToken
    @CreditsOper(type = BusinessType.LOGIN)
    public UserLoginBack funcUserLogin(UserLoginForm param);


    //第三方授权登录
    @NoLogin
    @RedisMutex(key = "authorization", value = "", expireTime = 1)
    public UserLoginBack  loginAuthorization(LoginAuthorizationForm form);

    @NoLogin
    @NoToken
    public UserLoginBack redirectLogin(RedirectLoginForm form);

    /**
     * 跟投者用户密码重置
     * */
    @NoLogin
    @NoToken
    public HSBCPSBackVO funcUserPasswordRest(UserPasswordRestForm param);

    /**
     * 跟投者用户登出
     * */
    public HSBCPSBackVO funcUserLogOut(UserLogoutForm param);


    /**
     * 跟投者用户密码修改
     * */
    public HSBCPSBackVO funcUserPasswordChange(UserPasswordUpdateForm param);

    /**
     * 用户昵称修改
     * */
    public HSBCPSBackVO funcUserAliasNameChange(UserAliasNameForm param);

    /**
     * 用户头像修改
     * */
    public HSBCPSBackVO funcUserHeadpicChange(UserAvatarForm param);

    /**
     * 用户信息获取
     * */
    public UserInfoBack funcUserInfoQuery(UserInfoQryForm param);

    /**
     * 游客身份登录
     * */
    @NoToken
    public UserLoginBack funcVisitorLogin(VisitorLoginForm param);

    @NoLogin
    public UserLoginBack funcXiNanLogin(XiNanUserLoginForm param);



    public InviteInfoBack func_get_invite_info(InviteinfoForm form);


    @NoToken
    @CreditsOper(type = BusinessType.LOGIN)
    public HSBCPSBackVO func_user_open_app(UserOpenAppForm fom);

    public RongYunTokenBack funcRongYunToken(RongYunTokenQueryForm form);

    UserBasicInfoList funcUserBasicInfoListQry(UserBasicInfoListQryForm form);

}
